
package com.phevos.common.util;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class Task
{
    protected static Logger logger = LoggerFactory.getLogger(Task.class.getName());

    /**
     * ����ִ�е�ʱ�������ڵ���̵߳�ȡ�
     */
    protected int interval;

    /**
     * ���������´�ִ��ʣ���ʱ�䡣������߳��޸ģ����ڵ�ȡ�
     */
    protected int nextTime;

    /**
     * ���һ��ִ�еĿ�ʼʱ�䣬ִ�����ʱ����Ϊ0
     */
    protected long startTime;

    /**
     * ������������ִ��ʱ�䣬��λ����. >0ʱ�������壻<=0����ʾδ����
     */
    protected long maxExecuteTime = 0;

    /**
     * �����ִ����� ���ȵ��òɼ�����ɼ���ݣ�Ȼ����ù��������ж��Ƿ������ϣ���������ϣ�����Center���͹���
     */
    public abstract void run();

    /**
     * ������Ϻ�����
     */
    public abstract void clear();

    /**
     * �ж������Ƿ���ֹ
     * 
     * @return
     */
    public abstract boolean over();

    /**
     * Ĭ�������ͬ������������?���ǵ�
     * 
     * @return boolean
     */
    public boolean isbestrow()
    {
        return true;
    }

    /**
     * identifier ��4��־һ�����񡣱��� resId + 'FAULT'���ĳ����Դ�Ĺ������� �� ������Դ�����÷���ı�ʱ������̸߳����������б�ʱʶ������
     * 
     * @return �������һ���־����Ψһ
     */
    public abstract String getIdentifier();

    /**
     * dump������
     */
    public abstract void dump();

    /**
     * �õ�����ĸ���
     * 
     * @return
     */
    public abstract float getLoad();

    /**
     * ��������ļ��ʱ��
     * 
     * @param inter int
     */
    public void setInterval(int inter)
    {
        interval = inter;
    }

    /**
     * ��ȡ����ļ��ʱ��
     * 
     * @return int
     */
    public int getInterval()
    {
        // ###logger.debug("interval is:" + interval);
        return interval;
    }

    /**
     * ������������ִ��ʱ��
     * 
     * @param maxTime int
     */
    public void setMaxTaskTime(int maxTime)
    {
        maxExecuteTime = maxTime;
    }

}
